const session = require("express-session")
const mysql = require("mysql")
const mysqlStore = require("express-mysql-session")(session)
//引入数据库连接的实例和数据库配置
const {config} = require("../dbConfig/dbConfig")
//建立session与MySQL数据库的连接
let sessionConnection = mysql.createConnection(config)
//创建session实例，在MySQL存储中为session开辟空间
let sessionStore = new mysqlStore({
    createDatabaseTable: true, //是否创建session表
    //session表规则
    schema: {
        tableName: 'session', //表名
        columnNames: {
            //列选项
            session_id: 'session_id', //sessionID
            expires: 'expires', //失效时间
            data: 'data' //session的值
        }
    }
},sessionConnection)
module.exports = session({
    key: 'sheep',    //自行设置的签名
    secret: 'sheep',   //密钥
    store: sessionStore,   //存储管理器
    rolling: true,   //每个请求都重新设置一个 cookie，默认为 false。
    resave: false,   //(是否允许)当客户端并行发送多个请求时，其中一个请求在另一个请求结束时对session进行修改覆盖并保存。//默认为true。但是(后续版本)有可能默认失效，所以最好手动添加。
    saveUninitialized: true,  //强制将来初始化的session存储
    cookie:{maxAge: 7*24*60*60*1000 },  //cookie生效时间为一周
    secure: false   //安全标志，指定后，当secure为true时候，在HTTP中是无效的，
                    //在HTTPS中才有效，表示创建的cookie只能在HTTPS连接中
                    //被浏览器传递到服务器端进行会话验证，如果是HTTP连接则不会传递该信息，
                    //所以一般不会被且听到。
})
